package com.answeringplayer.mapper;

import com.answeringplayer.domain.QuestionBank;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 题库Mapper接口
 * 对应XML映射文件: QuestionBankMapper.xml
 */
public interface QuestionBankMapper {
    
    /**
     * 根据ID查询题库
     * @param bankId 题库ID
     * @return 题库实体
     */
    QuestionBank selectById(Integer bankId);
    
    /**
     * 根据分类ID查询题库
     * @param categoryId 分类ID
     * @return 题库列表
     */
    List<QuestionBank> selectByCategoryId(Integer categoryId);
    
    /**
     * 查询所有题库
     * @return 题库列表
     */
    List<QuestionBank> selectAll();
    
    /**
     * 分页查询题库
     * @param categoryId 分类ID
     * @param name 题库名称
     * @param offset 偏移量
     * @param limit 每页数量
     * @return 题库列表
     */
    List<QuestionBank> selectPage(
            @Param("categoryId") Integer categoryId,
            @Param("name") String name,
            @Param("offset") Integer offset,
            @Param("limit") Integer limit
    );
    
    /**
     * 插入题库
     * @param questionBank 题库实体
     * @return 影响行数
     */
    int insert(QuestionBank questionBank);
    
    /**
     * 更新题库
     * @param questionBank 题库实体
     * @return 影响行数
     */
    int update(QuestionBank questionBank);
    
    /**
     * 根据ID删除题库
     * @param bankId 题库ID
     * @return 影响行数
     */
    int deleteById(Integer bankId);
    
    /**
     * 根据分类ID删除题库
     * @param categoryId 分类ID
     * @return 影响行数
     */
    int deleteByCategoryId(Integer categoryId);


    /**
     * 获取题库数量统计
     * @return 分类ID和对应的题库数量
     */
    List<Map<String, Object>> countByCategory();
}